{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "from glob import glob\n",
    "import json"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "['prepared-translation.json',\n",
       " 'prepared-gpt4all-code.json',\n",
       " 'prepared-dolly.json',\n",
       " 'prepared-summarization.json',\n",
       " 'prepared-gpt4all-v1.3.json',\n",
       " 'prepared-gpt4all.json',\n",
       " 'prepared-parliment.json',\n",
       " 'prepared-sentiment.json',\n",
       " 'prepared-common-crawl.json',\n",
       " 'prepared-alpaca.json']"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "glob('prepared-*.json')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "files = glob('prepared-*.json')\n",
    "with open('combined-v4.jsonl', 'w') as fopen:\n",
    "    for f in files:\n",
    "        \n",
    "        if 'translation' in f:\n",
    "            continue\n",
    "            \n",
    "        with open(f) as fopen_j:\n",
    "            data = json.load(fopen_j)\n",
    "        \n",
    "        for d in data:\n",
    "            if 'terjemahkan teks' in d.lower():\n",
    "                continue\n",
    "                \n",
    "            if 'no need to translate' in d.lower():\n",
    "                continue\n",
    "            \n",
    "            if 'can be translated' in d.lower():\n",
    "                continue\n",
    "                \n",
    "            if 'cannot translate' in d.lower():\n",
    "                continue\n",
    "                \n",
    "            if 'should be translated to' in d.lower():\n",
    "                continue\n",
    "                \n",
    "            if 'cannot be translated' in d.lower():\n",
    "                continue\n",
    "                \n",
    "            if 'standard malay' in d.lower():\n",
    "                continue\n",
    "                \n",
    "            if 'would not be translated' in d.lower():\n",
    "                continue\n",
    "            \n",
    "            if 'as an AI language model' in d:\n",
    "                continue\n",
    "                \n",
    "            if 'should be translated as' in d.lower():\n",
    "                continue\n",
    "                \n",
    "            if 'Bahasa Malaysia Standard' in d:\n",
    "                continue\n",
    "                \n",
    "#             if 'translate' in d.lower():\n",
    "#                 print(d)\n",
    "#                 print('\\n------')\n",
    "\n",
    "            d = {'input': d}\n",
    "            \n",
    "            fopen.write(f'{json.dumps(d)}\\n')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "1181224 combined-v4.jsonl\r\n"
     ]
    }
   ],
   "source": [
    "!wc -l combined-v4.jsonl"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "{\"input\": \"Below is an instruction that describes a task. Write a response that appropriately completes the request.\\n\\n### Instruction:\\nGive me a Python function for a buffer that is smaller than the requested size.\\n\\n### Response:\\nAnda boleh menentukan buffer dengan saiz yang lebih kecil menggunakan bytearray() bawaan Python atau dengan membuat array khusus dengan modul array. Contohnya:\\n\\n```python\\nbuffer = bytearray(256)\\n``` atau\\n```python\\nimport array\\nbuffer = array.array('i', [0] * 256)\\n```\"}\r\n",
      "{\"input\": \"Below is an instruction that describes a task. Write a response that appropriately completes the request.\\n\\n### Instruction:\\n\\\"Berikan saya fungsi Python untuk pengepam yang lebih kecil daripada saiz yang diminta.\\\"\\n\\n### Response:\\nAnda boleh menentukan buffer dengan saiz yang lebih kecil menggunakan bytearray() bawaan Python atau dengan membuat array khusus dengan modul array. Contohnya:\\n\\n```python\\nbuffer = bytearray(256)\\n``` atau\\n```python\\nimport array\\nbuffer = array.array('i', [0] * 256)\\n```\"}\r\n",
      "{\"input\": \"Below is an instruction that describes a task. Write a response that appropriately completes the request.\\n\\n### Instruction:\\nwhether a string is able to be converted to float.\\n\\n### Response:\\nAnda boleh menggunakan blok `try` dan `except` dalam Python untuk memeriksa sama ada sesuatu rentetan boleh ditukar kepada nombor perpuluhan. Berikut adalah contohnya:\\n\\n```\\ndef is_float(string):\\n    try:\\n        float(string)\\n        return True\\n    except ValueError:\\n        return False\\n```\"}\r\n"
     ]
    }
   ],
   "source": [
    "!head -n 3 combined-v4.jsonl"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [],
   "source": [
    "!rm *cache"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [],
   "source": [
    "!shuf combined-v4.jsonl > shuf-combined-v4.jsonl"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "{\"input\": \"Below is an instruction that describes a task. Write a response that appropriately completes the request.\\n\\n### Instruction:\\n<p>Pertama, saya perlu menyebutkan bahawa saya menggunakan versi torch 0.3.1, tetapi saya bersedia untuk mengemas kini jika perlu.</p>\\n\\n<p>Saya masih belajar, jadi sila beritahu saya jika saya salah faham di sini.</p>\\n\\n<p>Saya sedang membina beberapa graf secara imperatif, menggunakan Pembolehubah. Ungkapan matematik mungkin agak rumit seiring berjalannya waktu, dan bahagian tertentu dari graf mungkin dihasilkan menggunakan fungsi gradien autograd, yang kemudian boleh dioperasikan.</p>\\n\\n<p>Saya boleh membuat apa-apa ungkapan yang saya mahu dengan baik. Satu-satunya masalah adalah membina graf ini boleh menjadi agak \\\"lambat\\\" - untuk operasi yang agak mudah (matriks 4x4 yang dikalikan bersama-sama), ia boleh mengambil beberapa ms.</p>\\n\\n<p>Setelah graf ini dihasilkan, saya mengharapkan bahawa saya boleh mengemas kini nilai-nilai Pembolehubah tertentu, dan menilai hasil graf (atau mana-mana nod, sebenarnya), dengan lebih cepat. Saya percaya bahawa itu mungkin kerana penilaian sepatutnya dapat berlaku sepenuhnya di bahagian belakang C, yang sepatutnya cukup dioptimumkan untuk kelajuan? Dengan kata lain, membina graf dalam python mungkin lambat, kerana ia melibatkan python untuk loop dan seumpamanya, tetapi menilai semula graf dengan topologi statik sepatutnya cepat.</p>\\n\\n<p>Adakah intuisi ini betul? Jika ya, bagaimana saya boleh mengemas kini nilai dengan cekap dan menilai semula graf?</p>\\n\\n### Response:\\nSebagai model bahasa AI, saya percaya bahawa intuisi anda secara umumnya betul. Apabila anda membuat graf menggunakan Pembolehubah, anda sebenarnya sedang membina graf pengiraan yang mewakili ungkapan matematik yang anda ingin nilai. Setelah graf pengiraan ini dibina, anda sepatutnya dapat mengemas kini nilai-nilai Pembolehubah tertentu dan menilai hasil graf dengan lebih cepat daripada membina graf dari awal setiap kali.\\n\\nSebab untuk ini adalah kerana graf pengiraan dilaksanakan di bahagian belakang C (seperti yang anda sebutkan), yang sangat dioptimumkan untuk kelajuan. Apabila anda mengemas kini nilai Pembolehubah, bahagian belakang C hanya perlu mengira semula bahagian graf yang bergantung pada Pembolehubah itu, bukannya membina semula keseluruhan graf dari awal.\\n\\nUntuk mengemas kini nilai dengan cekap dan menilai semula graf, anda hanya perlu mengemas kini nilai Pembolehubah menggunakan atribut .data, dan kemudian memanggil kaedah .backward() pada Pembolehubah output untuk mengira gradien. Berikut adalah contohnya:\\n\\n```\\nimport torch\\nfrom torch.autograd import Variable\\n\\n# Cipta graf pengiraan\\nx = Variable(torch.randn(2, 2), requires_grad=True)\\ny = Variable(torch.randn(2, 2), requires_grad=True)\\nz = x * y\\noutput = z.mean()\\n\\n# Nilai graf dan kira gradien\\noutput.backward()\\n\\n# Kemas kini nilai Pembolehubah dan nilai semula graf\\ny.data = torch.ones(2, 2)\\noutput = z.mean()\\noutput.backward()\\n```\\n\\nDalam contoh ini, kami mencipta graf pengiraan yang mudah yang mengalikan dua Pembolehubah (x dan y) bersama-sama dan mengambil min mereka. Kemudian, kami menilai graf dan mengira gradien menggunakan kaedah .backward().\\n\\nUntuk mengemas kini nilai y dan menilai semula graf, kami hanya menetapkan nilai torch.ones(2, 2) ke atribut .data y, dan kemudian mengira semula keluaran min dan gradien menggunakan kod yang sama seperti sebelumnya.\\n\\nPerhatikan bahawa dalam beberapa kes, mungkin lebih cekap untuk menggunakan operasi dalam-tempat (contohnya y *= 2 daripada y = 2 * y) untuk mengemas kini nilai Pembolehubah. Walau bagaimanapun, ini boleh menjadi rumit dan mungkin memperkenalkan kesilapan halus jika anda tidak berhati-hati, jadi pastikan untuk membaca dokumentasi dengan teliti sebelum menggunakan operasi dalam-tempat.\"}\r\n",
      "{\"input\": \"Below is an instruction that describes a task. Write a response that appropriately completes the request.\\n\\n### Instruction:\\nKarang set Esei di Hanoi, tempat lif yang dimasak bertemu Sophocles, yang diilhamkan oleh karya Gertrude Stein.\\n\\n### Response:\\nKetika lif yang dimasak perlahan-lahan menuruninya, Sophocles mendapati dirinya hilang akal. Dia berada di Hanoi, sebuah bandar yang selalu ingin dia lawati, dan ia lebih mempesonakan daripada yang pernah dia bayangkan. Pemandangan, bunyi dan bau Hanoi telah membuatkan dia terharu, dan dia tidak sabar untuk meneroka lebih banyak lagi.\\n\\nNamun, fikirannya terganggu apabila lif tiba-tiba berhenti. Senyuman yang dahulunya menjadi senyap yang memekakkan telinga, dan Sophocles tidak pasti apa yang perlu dilakukan. Tetapi tiba-tiba, pintu terbuka, dan masuk seorang wanita yang tidak dapat dia letakkan.\\n\\nRambut kelabunya digayakan menjadi bob yang elegan, dan dia memakai kimono yang mengalir di belakangnya seperti kereta api. Semasa dia masuk, dia mengimbas lif dengan panik sebelum matanya bertemu dengan Sophocles. Dia tersenyum, dan Sophocles tahu bahawa dia telah bertemu seseorang yang istimewa.\\n\\n\\\"Hello,\\\" katanya sambil menghulurkan tangannya. \\\"Saya Gertrude.\\\"\\n\\n\\\"Sophocles,\\\" jawab Sophocles sambil memegang tangannya dengan lembut. \\\"Saya gembira dapat berjumpa dengan awak.\\\"\\n\\nTerdapat tenaga yang luar biasa antara mereka berdua, seolah-olah mereka telah mengenali antara satu sama lain selama bertahun-tahun. Ketika lif meneruskan perjalanannya yang kelihatan tidak berkesudahan, Gertrude mula bersuara.\\n\\n\\\"Saya suka cara awak menulis, Sophocles,\\\" katanya, suaranya seperti angin musim panas yang hangat. \\\"Kata-kata anda mempunyai kualiti muzik, tidak seperti apa-apa yang pernah saya baca.\\\"\\n\\nSophocles merasakan hatinya membengkak kerana bangga dengan kata-katanya. Gertrude Stein adalah ikon sastera, dan baginya membaca karyanya adalah satu penghormatan yang sukar difahaminya.\\n\\nMereka terus bercakap, membincangkan proses kreatif masing-masing dan berkongsi idea. Ketika mereka berbual, lif itu mula berderit dan mengerang, seolah-olah hendak rosak. Tetapi daripada ketakutan, Sophocles berasa teruja - ini adalah pengembaraan yang tidak dijangka.\\n\\nAkhirnya, pintu lif terbuka, menampakkan jalan-jalan Hanoi yang sibuk di luar. Sophocles dan Gertrude melangkah keluar, berpegangan tangan, bersedia untuk menghadapi hari itu.\\n\\nDan ketika mereka berjalan di jalan, berbual dan ketawa, Sophocles tahu bahawa ini adalah saat yang tidak akan dia lupakan. Pada pagi ini, dia telah bertemu dengan wira sasteranya dan mendapat inspirasi di tempat yang paling tidak dijangka.\"}\r\n",
      "{\"input\": \"Below is an instruction that describes a task. Write a response that appropriately completes the request.\\n\\n### Instruction:\\nKarang cerita Geografi yang panjang berlatarkan Tartu, tempat dakwat penuh semangat bertemu dengan Mikhail Gorbachev, yang diilhamkan oleh karya Karl Ove Knausg\\u00e5rd.\\n\\n### Response:\\nIa adalah hari musim panas yang hangat di Tartu, Estonia, di mana bandar universiti purba itu sibuk dengan orang dari seluruh dunia.\\n\\nDi tengah-tengah orang ramai berdiri dakwat penuh semangat bernama Ida, yang terkenal dengan kecerdasannya yang tajam dan suka pengembaraan. Dia telah tiba di Tartu untuk menghadiri persidangan geografi, dan tidak sabar-sabar untuk menerokai bandar dan banyak mercu tandanya.\\n\\nSemasa dia berjalan melalui jalan yang berliku-liku, Ida tidak dapat mengelak daripada memerhatikan tenaga bandar yang meriah. Daripada bangunan berwarna-warni hingga ke kafe yang mengalu-alukan, semuanya kelihatan hidup dengan semangat yang unik.\\n\\nTiba-tiba, dia mendengar kekecohan di hadapan dan memutuskan untuk menyiasat. Apabila dia semakin dekat, dia menyedari kekecohan itu berlaku di sekeliling seorang lelaki yang dikawal oleh pihak keselamatan. Ia tidak lain adalah Mikhail Gorbachev, bekas pemimpin Kesatuan Soviet.\\n\\nRasa ingin tahu Ida semakin menguasai dirinya dan dia menghampiri tempat kejadian, tertarik dengan kemungkinan bertemu dengan tokoh terkenal ini. Semasa dia hampir, dia mendengar Gorbachev bercakap dalam bahasa Rusia dan terkejut apabila mendapati dia boleh memahaminya. Ketika itulah dia menyedari bahawa semua masa yang panjang untuk belajar bahasa Rusia akhirnya membuahkan hasil.\\n\\nBerasa berani, Ida memutuskan untuk mencuba nasib dan mendekati Gorbachev. Terkejut dia, dia menjawab dengan mesra dan juga bertanya tentang dirinya. Semasa mereka berjalan bersama, mereka bercakap tentang Tartu dan sejarahnya yang kaya.\\n\\nGorbachev sangat menyukai Tartu, telah melawat bandar itu beberapa kali pada masa lalu. Beliau bercakap tentang kepentingan bandar itu sebagai pusat pendidikan dan budaya, dan peranannya dalam membentuk masa depan Estonia.\\n\\nSemasa mereka berjalan, Ida tidak dapat menahan perasaan terinspirasi dengan perbualan itu. Dia menyedari bahawa ada banyak lagi yang ada pada Tartu daripada sekadar kecantikan fizikalnya.\\n\\nKemudian pada hari itu, Ida mendapati dirinya berada di sebuah kafe yang sunyi, merenung peristiwa hari itu. Pertemuan dengan Gorbachev telah menjadi pengalaman yang nyata, tetapi ia juga memberinya penghargaan baru untuk Tartu.\\n\\nDiilhamkan oleh pertemuan itu, Ida memutuskan untuk menerokai bandar dengan lebih banyak lagi. Dia melawat universiti, taman botani, dan beberapa muzium. Ke mana sahaja dia pergi, dia mendapati dirinya belajar lebih lanjut tentang geografi dan budaya Tartu.\\n\\nHari bertukar menjadi minggu, dan Ida tinggal di Tartu, menyerap segala yang ditawarkan oleh bandar itu. Semasa dia duduk di taman pada suatu petang yang malas, dia mengeluarkan salinan \\\"Perjuangan Saya\\\" Karl Ove Knausg\\u00e5rd, dan mula membaca.\\n\\nSemasa dia membaca, dia menyedari bahawa perjalanannya sendiri di Tartu adalah seperti perjuangan Knausg\\u00e5rd. Dan sama seperti Knausg\\u00e5rd, dia mencari makna dan tujuan dalam dunia di sekelilingnya.\\n\\nKetika matahari mula terbenam, Ida menutup bukunya dan melihat sekeliling. Bandar itu sunyi, tetapi dia tahu bahawa ia masih hidup dengan lebih daripada apa yang dilihat mata. Bagi Ida, Tartu telah menjadi tempat keajaiban dan penemuan, dan dia berjanji pada dirinya bahawa dia akan sentiasa mengingati pelajaran yang dia pelajari di sana.\"}\r\n",
      "{\"input\": \"Below is an instruction that describes a task. Write a response that appropriately completes the request.\\n\\n### Instruction:\\ntext `Semoga kekal tabah bro. In Shaa Allah semuanya akan baik2 sahaja.`, categorize the text with label ['negative', 'positive', 'neutral'] and explain, return as JSON key {'sentiment', 'explain_en', 'explain_ms'}\\n\\n### Response:\\n{\\n    \\\"sentiment\\\": \\\"neutral\\\",\\n    \\\"explain_en\\\": \\\"The text is neutral as it does not express a clear positive or negative sentiment. It is a message of encouragement and hope, but does not indicate a specific emotion.\\\",\\n    \\\"explain_ms\\\": \\\"Teks ini adalah neutral kerana ia tidak mengungkapkan perasaan positif atau negatif yang jelas. Ia adalah mesej sokongan dan harapan, tetapi tidak menunjukkan emosi yang spesifik.\\\"\\n}\"}\r\n",
      "{\"input\": \"Below is an instruction that describes a task. Write a response that appropriately completes the request.\\n\\n### Instruction:\\nparagraph `\\nDR. 28.3.2023 97 \\n \\nsekolah-sekolah di kawasan luar bandar dan pedalaman Sarawak yang berdepan \\n\\ndengan masalah capaian internet yang lemah dan tidak stabil. \\n\\n Butiran 03900 \\u2013 Perolehan Tanah Pendidikan. Pada Januari tahun ini, Yang \\n\\nAmat Berhormat Perdana Menteri telah mengatakan bahawasanya Kerajaan \\n\\nPersekutuan bersetuju untuk mengembalikan tanah milik kerajaan negeri yang dipajak \\n\\nuntuk tujuan pembangunan awam sekiranya tiada sebarang projek dilaksanakan di \\n\\ntanah terlibat dalam tempoh tiga bulan. Yang Amat Berhormat Perdana Menteri juga \\n\\nmengatakan ia perlu dikembalikan kepada negeri dalam tempoh tersebut sekiranya \\n\\ntiada tanda ia akan digunakan atau dibangunkan sebarang projek dalam tempoh tiga \\n\\nbulan. \\n\\n Untuk pengetahuan Yang Berhormat Menteri, di kawasan saya, saya ambil \\n\\ncontoh di SK Pusa dan SK Beladin yang telah dibuat sekolah baharu tetapi sekolah \\n\\nlama masih lagi terbiar dan sekolah tersebut sekarang tidak diambil endah. Kebanyakan \\n\\nperabot dan kayu-kayu di kawasan sekolah berkenaan telah di vandalisme dan dicuri \\n\\noleh orang-orang yang tidak bertanggungjawab. Saya mohon kementerian melihat isu \\n\\nini supaya sekolah yang tidak diguna pakai ini dapat dikembalikan semula pada \\n\\nSarawak tanahnya dan bangunannya untuk kita manfaatkan untuk aktiviti-aktiviti \\n\\npenduduk di kawasan berkenaan. \\n\\n Saya juga ingin bersetuju dengan pendapat Yang Berhormat Klang yang \\n\\nsebentar tadi yang mencadangkan untuk kita mengembalikan peperiksaan-peperiksaan \\n\\nyang sebelum ini dimansuhkan umpamanya peperiksaan saya lihat UPSR. Kita perlu \\n\\nmelihat di peringkat rendah ini \\u2013 kita mesti mewujudkan satu peperiksaan untuk \\n\\nmengukur tahap kemampuan pelajar-pelajar di peringkat rendah.  \\n\\nSekiranya tidak diwujudkan peperiksaan di peringkat rendah, sukar untuk kita \\n\\nmelihat kemampuan pelajar ini yang daripada darjah satu hingga darjah enam. \\n\\nWalaupun kita tahu ada peperiksaan atau pentaksiran berasaskan sekolah, tetapi saya \\n\\nmohon UPSR ini diwujudkan semula untuk kita melihat keseluruhan pencapaian murid-\\n\\nmurid kita di peringkat rendah.  \\n\\n Akhir kata, saya berterima kasih atas komitmen pihak kementerian untuk \\n\\nmembangunkan sekolah-sekolah dan membaik pulih kualiti pendidikan di luar bandar \\n\\nSabah dan Sarawak. Insya-Allah di masa akan datang dengan lebih banyak usaha \\n\\nuntuk membangunkan sekolah di Sabah dan Sarawak, diharap agar lebih ramai calon \\n\\nguru yang berminat, ikhlas dan sudi untuk menerima penempatan bertugas dan... \\n\\n Tuan Pengerusi [Dato' Ramli bin Dato\\u2019 Mohd Nor]: Yang Berhormat, sila \\n\\ngulung. \\n\\n\\n`, berdasarkan paragraph, jawab soalan `Apakah masalah yang dihadapi dalam capaian internet?`\\n\\n### Response:\\nMasalah yang dihadapi adalah capaian internet yang lemah dan tidak stabil.\"}\r\n"
     ]
    }
   ],
   "source": [
    "!head -n 5 shuf-combined-v4.jsonl"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.10"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
